Данная страница содержит справочные данные по доступным переопределяемым методам примененных в описаниях: Create a FeaturePython object part I и Программируемые объекты.
Указанные ниже методы в ~ 99% случаев применяются опытными пользователями proxy классов Python.
execute(self, obj)
|
Вызывается во время перерасчета FeaturePython (или пересчета всего документа) | Не вызывайте recompute() из этого метода (или любого метода, вызываемого из execute() ), поскольку это вызовет повторный пересчет, что может привести к зацикливанию.
|
onBeforeChange(self, obj, prop)
|
Вызывается перед тем, как значение свойства будет изменено | prop - название изменяемого свойства, но не сам объект свойства. Изменение свойства не может быть отменено. Будущее/текущее значение свойства не доступны для сравнения одновременно.
|
onChanged(self, obj, prop)
|
Вызывается после того, как значение свойства было изменено | prop - название свойства, которое подлежит изменению, но не сам объект свойства.
|
onDocumentRestored(self, obj)
|
Вызывается после восстановления документа или копирования объекта FeaturePython. | Иногда ссылки на объект FeaturePython из класса или класс из объекта FeaturePython могут быть нарушены, так как класс __init__() метод не вызывается при реконструкции объекта. Добавление self.Object = obj или obj.Proxy = self как правило решает эти проблемы.
|
Нередко можно столкнуться с ситуацией, когда обратные вызовы (callbacks) Python запускаются не так, как следовало бы. Начинающие в этой области могут быть уверены, что система обратного вызова FeaturePython не является хрупкой или сломанной. Неизменно, когда обратные вызовы не выполняются, это происходит из-за того, что ссылка потеряна или не определена в базовом коде. Однако, если кажется, что обратные вызовы прерываются без объяснения причин, предоставление ссылок на объекты/proxy ссылки в обратном вызове onDocumentRestored()
(как указано в первой таблице выше) может облегчить эти проблемы. Пока вы не освоитесь с системой обратного вызова, может быть полезно добавлять инструкции вывода в консоль print() в каждый обратный вызов для вывода сообщений в консоль в процессе разработки.
Приведенные ниже методы предназначены для продвинутого применения proxy классов Python, как правило в большинстве случаев они вам не понадобятся.
В случаях, когда документация к описываемому классу не актуализирована, вы можете самостоятельно определить какие методы доступны в нем , обратившись к исходному C++ коду. Например в классе шаблоне FeaturePython перечислены различные вызовы, в виде: imp-><название метода>()
.
Каждому из них соответствует аналогичный метод доступный в Python.
К примеру, imp->execute()
в строке 193 означает, что execute
метод доступен в Python коде.
Обратите внимание, что getPyObject()
и init()
являются особыми случаями и не подлежат подобному способу определения.